package org.springframework.beans.factory;

/**
 * @Name FactoryBean
 * @Description: 工厂加工 Bean 接口
 * 描述信息: FactoryBean 是一种特殊的 Bean，当向容器获取该 Bean 时，发现 Bean 为 FactoryBean 类型, 此时容器不再返回其本身，而是返回其 FactoryBean#getObject 方法的返回值，可通过编码方式定义经过工厂加工后的复杂的 Bean。
 * @Version v1.0.0
 * @Author: lichao
 * @Date: 2024-03-20 17:15:52
 **/
public interface FactoryBean<T> {

    /**
     * 获取经过加工处理后的 Bean 实例
     *
     * @return T 结果
     * @version v1.0.0
     * @author lichao
     * @date 2024-03-20 17:18:26
     */
    T getObject() throws Exception;

    /**
     * 当经过加工处理后的 Bean 实例为单例时, 将其放入单例缓存中, 下次直接从单例缓存中获取。
     *
     * @return boolean 是否为单例的判断结果
     * @version v1.0.0
     * @author lichao
     * @date 2024-03-20 17:19:10
     */
    boolean isSingleton();

}
